package com.lhz.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import org.apache.log4j.Logger;


/**
 * 含义：数字处理工具
 * 
 * @author WangGang 2017-6-21
 */
public class NumberUtil {

	private static Logger logger = Logger.getLogger("com.huihe.biz.comm.SystemUtil");

	/**
     *  浮点数格式化
     * @param number:需要转换的数字
     * @param fraction: 小数点的保留位数
     * @param isRounded:4舍5入开关：true-打开四舍五入；false-关闭
     * @return
     */
    public static double formatNumber(double number,int fraction,boolean isRounded) {
        
        // 如果不需要四舍五入，可以使用RoundingMode.DOWN
        RoundingMode roundingMode=RoundingMode.UP;
        if(!isRounded)
        	roundingMode=RoundingMode.DOWN;
        
        BigDecimal bg = new BigDecimal(number).setScale(fraction, roundingMode);

        
        return bg.doubleValue();
    }

    /**
     *  将数字转换为货币单位（小数点后2位4舍5入）
     * @return
     */
    public static double convert2Currency(double number) {
    	int fraction=2;
    	boolean isRounded=true;
    	
    	double result=formatNumber(number,fraction,isRounded) ;
        
        return result;
    }
    
    /**  
     * @title: double转换为货币
     * @param:
     * @author：Wang Gang     
     * @time：2017年12月15日 下午12:12:44  
     */
     public static double double2currency(double number, boolean isRounded) {
    	 String strNumber=String.valueOf(number);
 		int   scale  =   2;//设置小数位数      
 		BigDecimal   bigDecimal=   new  BigDecimal(strNumber); 
 		if (isRounded) {
 			bigDecimal=  bigDecimal.setScale(scale,RoundingMode.HALF_UP); 
 		} else {
 			bigDecimal=  bigDecimal.setScale(scale,RoundingMode.FLOOR); 
 		}
 		     
 		double result   =  bigDecimal.doubleValue();
 		
 		return result;
     }
     
     public static double doubleMultiple(double number1, double number2) {
         BigDecimal   bigDecimal1=   new  BigDecimal(Double.toString(number1)); 
   	  	 BigDecimal   bigDecimal2=   new  BigDecimal(Double.toString(number2)); 
  		     
   	  	 double result   =  bigDecimal1.multiply(bigDecimal2).doubleValue();
  		
   	  	 return result;
      }
    
    /**  
    * @title: float转换为货币
    * @param:
    * @author：Wang Gang     
    * @time：2017年12月15日 下午12:12:44  
    */
    public static float float2currency(float number, boolean isRounded) {
		int   scale  =   2;//设置小数位数      
		BigDecimal   bigDecimal=   new  BigDecimal((double)number); 
		if (isRounded) {
			bigDecimal=  bigDecimal.setScale(scale,RoundingMode.HALF_UP); 
		} else {
			bigDecimal=  bigDecimal.setScale(scale,RoundingMode.FLOOR); 
		}
		     
		float result   =  bigDecimal.floatValue();
		
		return result;
    }
    
    /**  
    * @title: 将数字转换为货币单位（小数点后2位4舍5入）
    * @param: number-准备转换的数字
    * @param：isRounded-是否4舍5入
    * @author：Wang Gang     
    * @time：2017年11月1日 下午10:04:31  
    */
    public static double convert2Currency(double number,boolean isRounded) {
    	int fraction=2;
    	
    	double result=formatNumber(number,fraction,isRounded) ;
        
        return result;
    }
//	public static float  CurrencyMultiplication(float arg1,float arg2){
//		BigDecimal bigDecimal1= new BigDecimal(Float.toString(arg1));
//		BigDecimal bigDecimal2 = new BigDecimal(Float.toString(arg2));
//		BigDecimal result1 = bigDecimal1.multiply(bigDecimal2);
//		return result1.floatValue();
//	}
	
}
